El viento derivado de satélites se codifica como tipo 240 - 260 dependiendo del instrumento. Sin embargo ni GFS ni el resto de los sistemas operativos usan las observaciones presentes en el prepbufr y en cambio leen el bufr especÃfico gdas.tHHz.satwnd.tm00.bufr_D.
En la Tabla 18 se detalla el uso de las distintas observaciones según el instrumento.
Mejor y con más detalle Tabla b
read_obs.f90
read_satwnd.f90
For the satellite ID type:
For satellite subtype:
The quality mark:the values range from 0 to 15.
Notas:
Prueba de asimilación usando 3DVar para hacer un par de experimentos rápidos.
Fecha: 2018112100
exp[bottom_top %in% seq(1, 60, 10)] %>%
ggplot(aes(west_east, south_north)) +
geom_point(aes(color = u)) +
scale_color_divergent() +
facet_grid(exp~bottom_top)
diff[bottom_top %in% seq(20, 58, 2)] %>%
ggplot(aes(west_east, south_north)) +
geom_point(aes(color = u.diff)) +
scale_color_divergent() +
facet_wrap(~bottom_top)
diag <- fread("/home/paola.corrales/comGSIv3.7_EnKFv1.3/examples/test/gsi_satwnd/results_conv_ges.2018112100") %>%
.[, c("V2", "V4") := NULL]
colnames(diag) <- c("var", "stationID", "type", "dhr", "lat", "lon", "pressure", "usage.flag", "obs", "obs.guess", "obs2", "obs.guess2", "rerr")
diag <- diag[type %between% c(240, 260)] %>%
.[, sat_type := case_when(
type == 240 ~ "GOES SW winds",
type == 241 ~ "India",
type == 242 ~ "JMA Visible",
type == 243 ~ "EUMETSAT visible",
type == 244 ~ "AVHRR winds",
type == 245 ~ "GOES IR",
type == 246 ~ "GOES WV cloud top",
type == 247 ~ "GOES WV deep layer",
type == 250 ~ "JMA WV deep layer",
type == 251 ~ "GOES visible",
type == 252 ~ "JMA IR winds",
type == 253 ~ "EUMETSAT IR winds",
type == 254 ~ "EUMETSAT WV deep layer winds",
type == 257 ~ "MODIS IR",
type == 258 ~ "MODIS WV cloud top",
type == 259 ~ "MODIS WV deep layer winds",
type == 260 ~ "VIIR IR winds")] %>%
melt(measure.vars = c("obs", "obs2", "obs.guess", "obs.guess2")) %>%
.[, var := if_else(str_detect(variable, "2"), "v", "u")] %>%
.[, variable := str_remove(variable, "2")] %>%
pivot_wider(names_from = variable, values_from = value) %>%
setDT
diag[var == "u"] %>%
ggplot(aes(ConvertLongitude(lon), lat)) +
geom_point(aes(color = sat_type)) +
geom_mapa() +
coord_sf(xlim = c(-75, -52), ylim = c(-42,-20)) +
facet_wrap(~usage.flag, labeller = labeller(usage.flag = c("-1" = "rejected",
"1" = "asimilated"))) +
labs(color = "Source",
x = "lon") +
theme_minimal()
N_obs <- diag[var == "u", .N, by = .(usage.flag, var)] %>%
.[, label := paste("N = ", N)] %>%
.[, ":="(lon = 302.0,
pressure = 920)]
diag[var == "u"] %>%
ggplot(aes(ConvertLongitude(lon), pressure)) +
geom_point(aes(color = sat_type)) +
scale_y_level(name = "pressure level", breaks = c(1000, 900, 700, 500, 400, 300, 200, 100)) +
scale_x_longitude(breaks = seq(-75, -55, 5)) +
geom_label(data = N_obs, aes(x = ConvertLongitude(lon), y = pressure, label = label)) +
facet_grid(var~usage.flag, labeller = labeller(usage.flag = c("-1" = "rejected",
"1" = "asimilated"))) +
labs(color = "Source",
x = "lon",
y = "pressure level") +
theme_minimal()
diag %>%
ggplot((aes(ConvertLongitude(lon), lat))) +
geom_point(aes(color = obs)) +
scale_color_divergent() +
geom_mapa() +
coord_sf(xlim = c(-75, -52), ylim = c(-42,-20)) +
facet_grid(var~usage.flag, labeller = labeller(usage.flag = c("-1" = "rejected",
"1" = "asimilated"))) +
theme_minimal()
diag[var == "u"] %>%
ggplot(aes(ConvertLongitude(lon), pressure)) +
geom_point(aes(color = obs)) +
scale_color_divergent() +
scale_y_level(name = "pressure level", breaks = c(1000, 900, 700, 500, 400, 300, 200, 100)) +
scale_x_longitude(breaks = seq(-75, -55, 5)) +
geom_label(data = N_obs, aes(x = ConvertLongitude(lon), y = pressure, label = label)) +
facet_grid(var~usage.flag, labeller = labeller(usage.flag = c("-1" = "rejected",
"1" = "asimilated"))) +
labs(color = "Source",
x = "lon",
y = "pressure level") +
theme_minimal()